How your plugin can customise the WordPress Command Palette

by | Jan 9, 2025 | Etcetera | 0 comments

The unencumber of WordPress 6.3 introduced the Command Palette, a serve as that gives rapid get right to use to actions often used by those who edit content material subject material or subjects during the CMS’s admin interface.

The menu-like Command Palette we could in shoppers to filter out available tasks the use of a simple search interface and make a choice possible choices to have the same opinion navigate the editor’s UI, toggle preferences, turn out to be types, manipulate blocks, and even get started rising new posts and pages.

Moreover available is a JavaScript-enabled API that allows developers so to upload capacity to the Command Palette. For example, the writer of a WordPress plugin that generates Web paperwork would most likely add a Command Palette get right of entry to that whisks shoppers off to a internet web page that displays the results of form submissions.

The developer of a plugin that uses many shortcodes would most likely link an get right of entry to inside the Command Palette to a pop-up “cheat sheet” to remind shoppers learn the way to make use of those codes.

The likelihood is that endless, and we’re supplying you with a mode of the way in which the API works to inspire you to use the Command Palette on your next WordPress plugin project.

WordPress Command Palette basics

You unlock the Comand Palette by the use of the use of the keyboard shortcut Cmd + ok (Mac) or Ctl + ok (House home windows and Linux) or clicking on the Title field at the peak of the Publish Editor or Website Editor:

Screenshot showing the WordPress Command Palette with its search field highlighted.
The Command Palette is activated during the Publish Editor.

The absolute best of the Palette includes a search field that filters entries as you kind. You’ll make a choice entries the use of a mouse or the use of the keyboard alone.

A partial tick list of directions available out of the sector inside the Palette accommodates:

  • Edit Template (when editing a internet web page)
  • Once more to internet web page (after editing its template)
  • Reset template
  • Reset template segment
  • Reset varieties to default
  • Delete template
  • Delete template segment
  • Toggle settings sidebar
  • Toggle block inspector
  • Toggle spotlight mode
  • Toggle distraction free
  • Toggle peak toolbar
  • Open code editor
  • Cross out code editor
  • Toggle tick list view
  • Toggle fullscreen mode
  • Editor preferences
  • Keyboard shortcuts
  • Show/conceal block breadcrumbs
  • Customize CSS
  • Style revisions
  • Open varieties
  • Reset varieties
  • View website online
  • View templates
  • View template parts
  • Open navigation menus
  • Rename Construction
  • Replica Construction
  • Organize all custom designed patterns
See also  Get a Unfastened AI Generator Structure Pack for Divi

And, in any case, developers can add their own to toughen their WordPress applications. Let’s leap into the process!

What you’ll wish to get started

The Comand Palette API is supported by the use of JavaScript applications you’re going to add on your duties the use of npm, the Node Bundle Supervisor. You’ll need an arrange of WordPress (local or a long way flung) that you simply’ll be capable to get right to use by means of the terminal to execute directions on the command line.

To get problems rolling, we created a WordPress plugin that could be area to the code that modifies the Command Palette. The plugin does little more than create a custom designed post kind that we title Products. (The whole thing you need to seize to get this a long way with a rudimentary plugin is available in our data to growing customized publish varieties.)

When our Product Pages plugin is activated, we succeed in a Dashboard menu get right of entry to for rising and browsing Product posts:

A screenshot of the WordPress Plugins page and an arrow pointing to the entry for a custom Products content type in the Admin menu.
Our Product Pages plugin provides a brand spanking new post content material subject material kind referred to as Products.

Our plugin does not have any unique the assistance of the WordPress Command Palette. For example, the default capacity of the Command Palette provides shortcuts so to upload new WordPress posts and pages:

Screenshot of the WordPress Command Palette showing the entries for creating posts and pages.
The shortcuts so to upload new posts or pages are often used inside the Command Palette.

However, the Command Palette is acutely aware of no longer the rest about rising our Product pages. We’re together with that capacity underneath.

Together with a custom designed command to the Command Palette

At the moment, our entire Product Pages plugin consists of a single PHP file that we’ve got named products.php and situated in wp-content/plugins/products. Somewhat then allow the Products post kind, it doesn’t do the remaining however. We’ll come once more to this file when we’ve prepare the JavaScript-powered API for the Command Palette.

Setting up the API dependencies

We start by the use of creating a generic package deal.json file inside the products record by the use of moving to that record inside the terminal and working the command:

npm init

It’s not a very powerful the way in which you respond to the init turns on, on the other hand you’ll wish to provide a name and description in your device. (We used products for the reason that identify and Product Pages as the description.)

See also  How to Add Product Tags, Attributes, and Categories to WooCommerce

Now that you simply’ve a skeletal package deal.json file, open it on your favorite code editor and add the following traces somewhere inside the body, most likely after the description line:

"scripts": {
        "assemble": "wp-scripts assemble --env mode=production"
},

Nevertheless inside the terminal, we can add the dependency for the WordPress Scripts — @wordpress/scripts — package deal:

npm arrange @wordpress/scrips --save

That can add the following traces to our plugin’s package deal.json file:

"dependencies": {
    "@wordpress/scripts": "^30.5.1"
}

Now, we can execute npm run assemble, on the other hand the process expects an index.js file (even if empty) in our plugin’s src record. We’ll create those and run the assemble the use of the following directions inside the terminal:

mkdir src
touch src/index.js
npm run assemble

That can create a assemble record for our production JavaScript (index.js). Like the one in src, that file could be blank at the present time. Moreover, inside the assemble record, you’ll have to to search out the file index.asset.php.

If problems appear to be built appropriately, let’s transfer ahead and add the remaining dependencies by the use of working the ones directions inside the terminal during the plugin’s root record:

npm arrange @wordpress/directions @wordpress/plugins @wordpress/icons --save

Take a look inside the package deal.json file now, and the dependencies block must look something like this:

"dependencies": {
    "@wordpress/directions": "^1.12.0",
    "@wordpress/icons": "^10.12.0",
    "@wordpress/plugins": "^7.12.0",
    "@wordpress/scripts": "^30.5.1"
}

The newly added WordPress Directions package deal interfaces with the Command Palette, the Plugins package deal is savvy about WordPress plugins, and the Icons package deal we could in you to select and display participants of a pre-built library of images.

Together with a Command Palette hook and enqueuing our script

Now that we’ve got our belongings in place, we wish to add code to our empty src/index.js file that may in reality hook into the Command Palette. Open the file on your editor and add this code:

import { useCommand } from '@wordpress/directions';
import { registerPlugin } from '@wordpress/plugins';
import { plus } from '@wordpress/icons';

const AddProductCommand = () => {
    useCommand( {
        identify: 'add-product',
        label: 'Add new product',
        icon: plus,
        callback: ( { close } ) => {
            record.location.href = 'post-new.php?post_type=kinsta_product';
            close();
         },
         context: 'block-editor',
     } );
    return null;
}
registerPlugin( 'products', { render: AddProductCommand } );
export default AddProductCommand;

Some notes on the above code:

  • A single icon (the plus decide) is imported from the Icons package deal.
  • useComand() is the hook that registers the command.
  • The label Add new product is the text that may become an get right of entry to inside the Command Palette.
  • The callback (what happens when an individual clicks on Add new product) simply opens the WordPress new post PHP file with a query string that specifies a Product post. (Until now, the only issue our plugin would possibly do.)
See also  Can ChatGPT Create Internet Design?

With that saved, it’s time for a final assemble:

npm run assemble

After building, assemble/index.js will include our production JavaScript. The overall step is to enqueue the script in WordPress. We do that by the use of together with the following code to the bottom of our products.php file (the straightforward PHP file that established the plugin and defines the Product post kind):

// Enqueue belongings.
add_action( 'enqueue_block_editor_assets', 'enqueue_block_editor_assets' );

/**
 * Enqueue belongings.
 *
 * @return void
 */

function enqueue_block_editor_assets() {
    wp_enqueue_script(
    'products',
    plugins_url( 'assemble/index.js', __FILE__ ),
    array(),
    '1.0',
    true
  );
}

With that whole, we’ll return to the WordPress editor and switch at the Command Palette. We will be able to have to look Add new product inside the tick list after typing the right search text:

A screenshot of the WordPress Command Palette showing that Add new product has been added.
Add new product has been added to the Command Palette.

If we make a choice Add new product from the Palette, WordPress will open the Publish Editor on the path reserved for our new Product content material subject material kind.

Summary

The Command Palette API opens up a flexible option to mix your device with one of the most a very powerful further attention-grabbing choices of recent WordPress. We’d be excited by learning if if in case you have taken advantage of the API and what you completed.

Developers such as you’ll be capable to depend on Kinsta to provide robust, Controlled WordPress Internet hosting solutions that reinforce performant and scalable duties.

Check out Kinsta nowadays to look how we can permit you to assemble top-tier WordPress internet sites!

The post How your plugin can customise the WordPress Command Palette gave the impression first on Kinsta®.

WP Hosting

[ continue ]

WordPress Maintenance Plans | WordPress Hosting

read more

0 Comments

Submit a Comment

DON'T LET YOUR WEBSITE GET DESTROYED BY HACKERS!

Get your FREE copy of our Cyber Security for WordPress® whitepaper.

You'll also get exclusive access to discounts that are only found at the bottom of our WP CyberSec whitepaper.

You have Successfully Subscribed!